home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / tcp_ip / wnos / wn941101 / netuser.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-08  |  2.9 KB  |  145 lines

  1. /* Miscellaneous format conversion subroutines */
  2. #define LINELEN 256
  3. #include <ctype.h>
  4. #include <stdio.h>
  5. #include "global.h"
  6. #include "netuser.h"
  7. #include "domain.h"
  8.  
  9. int Net_error;
  10.  
  11. /* Convert Internet address in ascii dotted-decimal format (44.0.0.1) to
  12.  * binary IP address
  13.  */
  14. int32
  15. aton(s)
  16. char *s;
  17. {
  18.     int32 n;
  19.     int i;
  20.  
  21.     if(s == NULLCHAR)
  22.         return 0;
  23.  
  24.     n = 0;
  25.  
  26.     for(i = 24; i >= 0; i -= 8) {
  27.         /* Skip any leading stuff (e.g., spaces, '[') */
  28.         while(*s != '\0' && !isdigit(*s))
  29.             s++;
  30.         if(*s == '\0')
  31.             break;
  32.         n |= (int32)atoi(s) << i;
  33.         if((s = strchr(s,'.')) == NULLCHAR)
  34.             break;
  35.         s++;
  36.     }
  37.     return n;
  38. }
  39.  
  40. /* Convert an internet address (in host byte order) to a dotted decimal ascii
  41.  * string, e.g., 255.255.255.255\0
  42.  */
  43. char *
  44. inet_ntoa(int32 a)
  45. {
  46.     static char buf[20], *name;
  47.  
  48.     if(DTranslate && (name = resolve_a(a,!DVerbose)) != NULLCHAR)
  49.         sprintf(buf,"%.16s",name);
  50.     else
  51.         sprintf(buf,"%u.%u.%u.%u",
  52.             hibyte(hiword(a)),lobyte(hiword(a)),
  53.             hibyte(loword(a)),lobyte(loword(a)) );
  54.  
  55.     return buf;
  56. }
  57.  
  58. /* Convert hex-ascii string to long integer */
  59. long
  60. htol(char *s)
  61. {
  62.     long ret = 0;
  63.     char c;
  64.  
  65.     while((c = *s++) != '\0'){
  66.         c &= 0x7f;
  67.         if(c == 'x')
  68.             continue;    /* Ignore 'x', e.g., '0x' prefixes */
  69.         if(c >= '0' && c <= '9')
  70.             ret = ret*16 + (c - '0');
  71.         else if(c >= 'a' && c <= 'f')
  72.             ret = ret*16 + (10 + c - 'a');
  73.         else if(c >= 'A' && c <= 'F')
  74.             ret = ret*16 + (10 + c - 'A');
  75.         else
  76.             break;
  77.     }
  78.     return ret;
  79. }
  80.  
  81. char *
  82. pinet(struct socket *s)
  83. {
  84.     static char buf[40], port[6];
  85.  
  86.     sprintf(buf,"%s:",inet_ntoa(s->address));
  87.  
  88.     switch(s->port) {
  89.         case 7:            /* Echo data port */
  90.             strcat(buf,"echo");
  91.             break;
  92.         case 9:            /* Discard data port */
  93.             strcat(buf,"discard");
  94.             break;
  95.         case 20:        /* FTP Data port */
  96.             strcat(buf,"ftp-data");
  97.             break;
  98.         case 21:        /* FTP Control port */
  99.             strcat(buf,"ftp");
  100.             break;
  101.         case 23:        /* Telnet port */
  102.             strcat(buf,"telnet");
  103.             break;
  104.         case 25:        /* Mail port */
  105.             strcat(buf,"smtp");
  106.             break;
  107.         case 53:        /* Domain Nameserver */
  108.             strcat(buf,"domain");
  109.             break;
  110.         case 79:        /* Finger port */
  111.             strcat(buf,"finger");
  112.             break;
  113.         case 87:        /* Chat port */
  114.             strcat(buf,"chat");
  115.             break;
  116.         case 109:        /* POP2 port */
  117.             strcat(buf,"pop2");
  118.             break;
  119.         case 110:        /* POP3 port */
  120.             strcat(buf,"pop3");
  121.             break;
  122.         case 119:        /* NNTP port */
  123.             strcat(buf,"nntp");
  124.             break;
  125.                 case 513:               /* Remote login */
  126.                         strcat(buf,"rlogin");
  127.                         break;
  128.         case 1234:        /* Pulled out of the air */
  129.             strcat(buf,"remote");
  130.             break;
  131.         case 3600:        /* conversd socket */
  132.             strcat(buf,"convers");
  133.             break;
  134.         case 3601:
  135.             strcat(buf,"xconvers");
  136.             break;
  137.         default:
  138.             sprintf(port,"%u",s->port);
  139.             strcat(buf,port);
  140.             break;
  141.     }
  142.     return buf;
  143. }
  144.  
  145.